package com.pussinboots.morning.sync.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.Tolerate;

import java.time.LocalDateTime;
import java.io.Serializable;

/**
 * <p>
 * 商品分类关联中间表
 * </p>
 *
 * @author BaoZhou
 * @since 2019-09-08
 */
@Data
//支持链式风格
@Accessors(chain = true)
@Builder
@TableName("buff_product_category_rltn")
public class BuffProductCategoryRltn extends Model<BuffProductCategoryRltn> {

    private static final long serialVersionUID = 1L;

    /**
     * 解决@Data与@Builder一起使用，实体类没有无参构造函数的坑
     * 此注解让lombok假装不知道有此方法，这样就不会与@Data产生冲突
     */
    @Tolerate
    public BuffProductCategoryRltn(){}

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 药事汇商品ID：用于记录新增、更新操作以后主表与此表记录的对应关系
     */
    private Long productId;

    /**
     * 药事汇分类ID：作用同上
     */
    private Long categoryId;

    /**
     * ERP商品ID：作用同上
     */
    private Integer erpProductId;

    /**
     * ERP分类ID：作用同上
     */
    private Integer erpCategoryId;

    /**
     * 本条记录创建时间（自动）
     */
    private LocalDateTime createTime;

    /**
     * 本条记录创建者
     */
    private String createBy;

    /**
     * 本条记录更新时间（自动）
     */
    private LocalDateTime updateTime;

    /**
     * 本条记录更新者
     */
    private String updateBy;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer addTag;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer updateTag;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer delTag;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    @Override
    public String toString() {
        return "ProductCategoryRltn{" +
            "id=" + id +
            ", productId=" + productId +
            ", categoryId=" + categoryId +
            ", erpProductId=" + erpProductId +
            ", erpCategoryId=" + erpCategoryId +
            ", createTime=" + createTime +
            ", createBy=" + createBy +
            ", updateTime=" + updateTime +
            ", updateBy=" + updateBy +
            ", addTag=" + addTag +
            ", updateTag=" + updateTag +
            ", delTag=" + delTag +
        "}";
    }
}
